The subject matter disclosed herein relates generally to software applications and, more specifically, to systems and methods for use in recording and replaying user interactions with a software application.
At least some known computer systems use test code to automatically execute application code based on predefined inputs, such as user interface manipulation, and expected outputs. Furthermore, some known systems record user interface input events by monitoring user interaction with a graphical user interface. For example, known systems may record that a mouse button is pressed with the cursor at a specific location within a window. Recorded events may be later replayed as part of a test script to determine whether the application behaves in an expected manner.
Because at least some known input recording systems focus on input at the level of a user interface, such systems have no access to internal application entities. For example, while user interface elements, such as menus and buttons, may be visible to a known input recording system, generally known systems have no awareness of the control code used to handle events generated by these user interface elements. As a result, test scripts that replay such events are specific to a particular implementation of a user interface. With known systems, when the user interface is modified, or a new user interface (e.g., a touch screen interface or voice-operated interface) is created, user interface events must be re-recorded to create a new test script.
Furthermore, known input recording systems are incapable of reading and writing the variables that compose application state. Accordingly, testing an application feature often requires extensive “setup”, or preliminary user interface manipulation, to achieve a desired pre-test application state. Moreover, application behavior can be evaluated based only on information presented via the user interface. Accordingly, known input recording systems may be incapable of validating internal data structures.